home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
misc
/
amicom1_0a.lha
/
AMICOM.OPL
next >
Wrap
Text File
|
1994-04-11
|
5KB
|
239 lines
PROC main:
GLOBAL cmdline$(255),com$(8),arg$(255)
GLOBAL devh%, fileh%, ret%, t%, currdir$(255), d%(6)
initlink:
setline:
rem put in background
call($c78d,100,0,0,0,0)
currdir$=parse$("","",d%())
do
cmdline$=getline$:
t%=loc(cmdline$," ")
if t%>0
com$=left$(cmdline$,loc(cmdline$," ")-1)
arg$=right$(cmdline$,len(cmdline$)-len(com$)-1)
else
com$=cmdline$
arg$=""
endif
ret%=do:(com$,arg$)
until ret%=1
shutdown:
ENDP
PROC do:(com$,arg$)
local d$(255),d%(6)
onerr error
if com$="LS"
if arg$=""
d$=dir$(currdir$)
else
d$=dir$(arg$)
endif
while d$<>""
sendline:(d$)
d$=dir$("")
endwh
sendline:("")
elseif com$="QUIT"
return(1)
elseif com$="CD"
currdir$=parse$("",arg$,d%())
if right$(currdir$,1)<>"\"
currdir$=currdir$+"\"
endif
setpath currdir$
sendline:(currdir$)
elseif com$="RM" or com$="RMDIR"
d$=parse$(arg$,"",d%())
if com$="RM"
trap delete d$
else
trap rmdir d$
endif
if err<>0
sendline:(err$(err))
else
sendline:(d$+" deleted.")
endif
elseif com$="MKDIR"
d$=parse$(arg$,"",d%())
trap mkdir d$
if err<>0
sendline:(err$(err))
else
sendline:(d$+" created.")
endif
elseif com$="GET"
sendfile:(arg$,0)
elseif com$="PUT"
getfile:(arg$,0)
elseif com$="TGET"
sendfile:(arg$,1)
elseif com$="TPUT"
getfile:(arg$,1)
elseif com$="INFO"
sendline:(getsize$:(arg$))
else
sendline:("Unrecognised command, "+com$)
endif
return(0)
error::
onerr off
if err<=-32 and err>=-69
sendline:(err$(err))
if com$="LS"
sendline:("")
endif
else
sendline:(err$(err)+", disconnected.")
print err$(err)
print "Press any key."
get
shutdown:
endif
return(0)
ENDP
PROC getline$:
LOCAL ret%,tmp$(255)
ret%=ioread(devh%,addr(tmp$),1)
if ret%<>1
print "Error getting input"
shutdown:
endif
if peekb(addr(tmp$))>0
ret%=ioread(devh%,addr(tmp$)+1,peekb(addr(tmp$)))
if ret%<>peekb(addr(tmp$))
print "Error getting input"
shutdown:
endif
else
tmp$=""
endif
return tmp$
ENDP
PROC sendline:(msg$)
LOCAL t$(255),len%, ret%
t$ = msg$
len% = LEN(t$)
ONERR PUTERR::
ret%=IOWRITE(devh%, ADDR(t$), len%+1)
ONERR OFF
IF ret% < 0
RAISE ERR
ENDIF
RETURN
PUTERR::
ONERR OFF
PRINT "Error sending ";ERR$(ERR)
GET
shutdown:
STOP
ENDP
PROC sendfile:(file$,type%)
local fileh%,ret%,buf$(255)
ret%=ioopen(fileh%,file$,$0400+$20*type%)
if ret%<0
sendline:(err$(ret%)+": "+file$)
else
sendline:("SENDING")
ret%=ioread(fileh%,addr(buf$)+1,255)
while ret%>0
pokeb addr(buf$),ret%
sendline:(buf$)
ret%=ioread(fileh%,addr(buf$)+1,255)
endwh
if ret%<0 and ret%<>-36
sendline:("")
sendline:(err$(ret%))
return
endif
sendline:("")
sendline:("Transfer OK")
ret%=ioclose(fileh%)
endif
endp
PROC getfile:(file$,type%)
local fileh%,ret%,buf$(255)
ret%=ioopen(fileh%,file$,$0102+$20*type%)
pause 40
if ret%<0
sendline:(err$(ret%)+": "+file$)
else
sendline:("RECEIVING")
buf$=getline$:
while buf$<>""
ret%=iowrite(fileh%,addr(buf$)+1,len(buf$))
if ret%<0
do
buf$=getline$:
until buf$=""
sendline:(err$(ret%))
ret%=ioclose(fileh%)
return
endif
buf$=getline$:
endwh
sendline:("Transfer OK")
ret%=ioclose(fileh%)
endif
endp
proc getsize$:(file$)
local fileh%,ret%,offset&,ret2%
ret%=ioopen(fileh%,file$,$0403)
if ret%=0
offset&=0
ret%=ioseek(fileh%,2,offset&)
if ret%=0
return gen$(offset&,10)
endif
ret2%=ioclose(fileh%)
endif
return err$(ret%)
endp
PROC initlink:
LOCAL ret%
ONERR linkerr::
ret%= IOOPEN(devh%, "TTY:A", $0000)
IF ret% <> 0
PRINT "Error ";ret%;" Raised"
RAISE ERR
ENDIF
ONERR OFF
RETURN
linkerr::
PRINT "Error ";ret%;ERR$(ret%);" in initing link"
GET
STOP
ENDP
PROC setline:
REM - 9600 baud, no parity, 8 data bits
REM 1 stop bit rts/cts flow contol
rsset:(15,0,8,1,8)
ENDP
PROC rsset:(baud%, parity%, data%, stop%, hand%)
LOCAL frame%, srchr%(6), dummy%, err%
frame%=data%-5
IF stop%=2:frame%=frame% OR 16:ENDIF
IF parity% :frame%=frame% OR 32 :ENDIF
srchr%(1) = baud% OR (baud% * 256)
srchr%(2) = frame% OR (parity%*256)
srchr%(3) = (hand% AND 255) OR $1100
srchr%(4) = $13
err%=IOW(devh%,7,srchr%(1),dummy%)
IF err% : RAISE err% : ENDIF
ENDP
PROC shutdown:
LOCAL ret%
ret%=IOCLOSE(devh%)
ENDP